package com.example.resourceSharingPlatform.config.security.jwt;

import com.example.resourceSharingPlatform.common.RestResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * JWT的controller层，接收前端的POST请求
 * 返回给前端响应信息 
 */

@RestController
public class JwtLoginController {

    @Autowired
    private JwtAuthService jwtAuthService;

    /*
     * 这个方法用于在登录后登录验证后返回token
     * 前端通过POST请求访问"/login"
     * login()会调用JwtAuthService的login(username,password)方法，获取token
     * 返回跟前端200的响应信息以及一个带有token的响应体
     * 
     * POST方法！！！
     * url:lcalhost:8080/login?username=&password=
     * 
     * @RestResult是封装响应返回信息的类，com.elltor.securityjwt2.common.RestResult
     * 参数:private String msg;
     *     private int code;
     *     private Object data;
     *     
     * 
     * 
     */
    @PostMapping("/login")
    public RestResult login(String username, String password){
    	
        //通过反射获得一个RestResult实例，RestResult是封装响应返回信息的类
        RestResult result = RestResult.newInstance();

        //请求成功，返回200
        result.setCode(200);

        // 该方法会调用UserDetailsServiceImpl的LoadUserByUsername
        // 登录认证，换取JWT令牌
        String token = jwtAuthService.login(username,password);

        //把token存成HashMap<String,Object>()
        //存入响应体的data中
        result.put("token",token);

        System.err.println(username+" "+password);

        return result;
    }


}
